<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 参数
        // function fun1(a,b,c){
        //     console.log(a);
        //     console.log(b);
        //     console.log(c);
        // }

        // fun1(4,5,6);

        // 匿名函数 使用参数的情况
        // (function(a,b){
        //     console.log(a,b);
        // })(1,2);

        // 实参和形参
        var x=1,y=2,z=3;
        function fun1(a,b,c){
            console.log(a);
            console.log(b);
            console.log(c);
        }
        // 这边的x,y,z 是实参
        // fun1(x,y,z);
        // console.log(x,y,z);

        // a,b,c 就是形参
        // 所以我们将function fun1(a,b,c) 里面的（）称为 
        // 形参列表

        // 形参和实参的个数
        // 实参个数都等于形参个数
        var w=4;
        // 不相等的情况
        // 实参大于新参
        // fun1(x,y,z,w);
        // 那么只取前面有效的个数

        // 实参个数小于形参
        fun1(x,y);
        // 先匹配前面的形参， 多余的形参值为undefined
        // js里面参数个数可以不匹配
        // 实参的个数小于等于形参

        // 传入不知道多少个数字，求里面的最大值
        // 1. 使用 arguments 接受参数
        // 接收所有的参数
        function fun2(a,b){
            console.log(a,b);
            console.log(arguments);
        }

        fun2(1,2,3,4,5,6);

        // 2. 不定参数
        // 接受的是剩余的参数
        function fun3(a,b,...c){
            console.log(a,b);
            
            console.log(c);
        }

        fun3(1,2,3,4,5,6);


        // 参数的默认值
        function fun4(a=1,b=2){
            console.log(a,b);
            // fun3();
        }
        fun4(4,5);

        function fun5(a,b=true){
            fun4(a,b)
        }
        fun5(1);
        // 递归
        // 父亲类  1    自己id 2
        // 先查所有父亲类是1的类别
        // 在查自己
        // 自己调自己
        // 递归一定要有结束条件

        

</script>
</body>
</html>